package com.hdl.design.pattern.decorator;

/**
 * 类名 AbstractDecorator
 * 描述 抽象装饰器
 *
 * @author hedonglin
 * @version 1.0
 * @date 2019/9/25 10:19
 */
public abstract class AbstractDecorator extends AbstractComponent{
    /**
     * 引用动态添加职责的接口
     */
    protected AbstractComponent component;

    public void setComponent(AbstractComponent component) {
        this.component = component;
    }

    /**
     * 编写父类添加职责方法，使用引用的component调用添加职责方法
     */
    @Override
    public void operation() {
        if (component == null){
            return;
        }
        // 当设置了AbstractComponent后，会先调用具体component里面的operation方法
        component.operation();
    }
}
